/*
	Copyright (C) 2008 by Jean-FranÁois Geyelin
	jfgeyelin@gmail.com

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation; either version 2 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the
	Free Software Foundation, Inc.,
	51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/

class MusicThread {
	public:
        static MusicThread *getInstance(void);
        static void deleteInstance(void);
        void smoothlyStartPlayingMusic(std::string music);
        void smoothlyStopPlayingMusic(void);
        void abruptelyStopPlayingMusic(void);
        void setMaxVolume(int v);
        void update(void);

	private:
        static MusicThread *instance;
        MusicThread(void);
		~MusicThread(void);
        void loadAndPlayMusic(std::string path);
		#ifdef FMOD_3
        FMUSIC_MODULE *music;
        #endif
		std::string nextMusicPath;
		bool isPlaying;
		bool isFadingOut;
		bool isFadingIn;
		bool hasNextSong;
		int volume;/*0-100*/
		int maxVolume;
		int currentChannel;


};
